/**
 * 项目名：	Rumba Plan
 * 
 * 版权所有(C)，上海海鼎信息工程股份有限公司，2007，所有权利保留。
 * 
 * 文件名：	IOptionalClassInfoMgr.java
 * 模块说明：	
 * 修改历史：
 * 2007-3-15 - lxm - 创建。
 */
package com.hd123.rumba.option;

import net.sf.hibernate.HibernateException;

import com.hd123.rumba.exception.BusinessException;
import com.hd123.rumba.runtime.IManager;

/**
 * 选项类信息 | 管理员 | 接口类
 * 
 * @author lxm
 * 
 */
public interface IOptionalClassInfoMgr extends IManager {

  /**
   * 创建一个新的选项类信息对象。
   * 
   * @return 返回创建的选项类信息对象。
   * @throws BusinessException
   */
  public IOptionalClassInfo createClassInfo() throws BusinessException;

  /**
   * 保存选项类信息到数据库。
   * 
   * @param classInfo
   *          指定被保存的选项类信息。
   * @throws BusinessException
   * @throws HibernateException
   */
  public void saveClassInfo(IOptionalClassInfo classInfo) throws BusinessException,
      HibernateException;

  /**
   * （物理）删除选项类信息。<br>
   * 注：仅提供用于系统维护。
   * 
   * @param classInfo
   *          指定被删除的选项类信息。
   * @throws BusinessException
   * @throws HibernateException
   */
  public void removeClassInfo(IOptionalClassInfo classInfo) throws BusinessException,
      HibernateException;

  /**
   * 根据uuid取得指定的选项类信息。
   * 
   * @param uuid
   *          指定选项类信息对象的uuid。
   * @return 返回取得的选项类信息，若找不到则返回null。
   * @throws BusinessException
   * @throws HibernateException
   */
  public IOptionalClassInfo getClassInfo(String uuid) throws BusinessException, HibernateException;

  /**
   * 根据选项类名取得选项类信息对象。
   * 
   * @param optionalClassName
   *          指定选项类名。
   * @return 返回找到的选项类信息对象，若找不到则返回null。
   * @throws BusinessException
   * @throws HibernateException
   */
  public IOptionalClassInfo getClassInfoByClass(String optionalClassName) throws BusinessException,
      HibernateException;

  /**
   * 获取指定选项类的注册信息对象。<br>
   * 该方法在任何情况下都会返回有个注册信息对象，即使该选项类从未注册，即不存在持久化的注册信息。这种情况该方法将为该选项类
   * 创建一个默认的注册信息对象并返回，默认情况下个性化级别为到域的。
   * 
   * @param optionalClassName
   *          指定选项类名。
   * @return 返回选项类信息对象。
   * @throws BusinessException
   * @throws HibernateException
   */
  public IOptionalClassInfo fetchClassInfoByClass(String optionalClassName)
      throws BusinessException, HibernateException;
}
